#include "./Engine/Pentago.h"
#include <iostream>
#include "./GUI/FabAbsUserInterfaceASCII.h"
#include "./Utils/Exceptions.h"

//#define TEST_UNITAIRES
//#define TEST_PLATEAU
//#define TEST_AFFICHAGEASCII
//#define TEST_VERIF
//#define TEST_PLATEAU
#ifdef TEST_PLATEAU
	#include "./Tests/TestPlateau.h"
#endif //TEST_PLATEAU
#ifdef TEST_AFFICHAGEASCII
	#include "./Tests/TestAffichageASCII.h"
#endif //TEST_AFFICHAGEASCII
#ifdef TEST_VERIF
	#include "./Tests/TestVerifications.h"
#endif //TEST_VERIF
#ifdef TEST_INTERACTIONASCII
	#include "./Tests/TestInteractionASCII.h"
#endif //TEST_INTERACTIONASCII


using namespace std;
int main(){
	cout << "grut" << endl;
	cout << "----------------- ceci est notre launcher, -----------------" <<endl;
	#ifdef TEST_UNITAIRES
	cout << "on va maintenant faire des tests plus ou moins unitaires ..." <<endl;

	#ifdef TEST_PLATEAU
	cout << "tests unitaires sur le plateau" << endl;
	TestPlateau::tests();
	#endif //TEST_PLATEAU

	#ifdef TEST_AFFICHAGEASCII
	cout << "tests unitaires sur l'affichage ASCII du plateau ..." << endl;
	TestAffichageASCII::tests();
	#endif //TEST_AFFICHAGEASCII

	#ifdef TEST_VERIF
	cout << "tests unitaires sur la verification..." << endl;
	TestVerifications::tests();
	#endif //TEST_VERIF

	#ifdef TEST_INTERACTIONASCII
	cout << "tests unitaires sur interaction ascii..." << endl;
	TestInteractionASCII::tests();
	#endif //TEST_INTERACTIONASCII
	#endif //TEST_UNITAIRES
	cout << "Bienvenue dans pintesAgogo !" << endl;
	cout << "c'est parti !!!"<<endl;
	GUI::FabAbsUserInterface* fab = new GUI::FabAbsUserInterfaceASCII();
	try{
		Engine::Pentago* pentago = Engine::Pentago::createInstance(fab);
	}catch(Utils::MyException e){
		cout << e.getMsg() <<endl;
	}
	return 0;
}
